# State.gd
# 所有具体状态的基类

class_name State extends Node

# 状态机和执行者的引用
var state_machine: StateMachine
var actor: Node

func _ready():
	# 等待父节点（StateMachine）的初始化信号
	# 这样可以确保在调用任何逻辑之前，引用都已设置好
	await get_parent().ready
	# 从状态机获取引用
	self.state_machine = get_parent()
	self.actor = state_machine.get_parent()

# --- 虚拟方法 ---
# 这些方法由具体的状态脚本去重写 (override)

# 当进入此状态时调用
func enter():
	pass

# 当退出此状态时调用
func exit():
	pass

# 处理每帧的逻辑 (对应 _process)
func process_logic(delta: float):
	pass

# 处理每帧的物理逻辑 (对应 _physics_process)
func physics_logic(delta: float):
	pass

# 处理输入事件 (对应 _unhandled_input)
func input_logic(event: InputEvent):
	pass
